/**
 * 
 */
package t4j.generics;

interface SelfBoundSetter<T extends SelfBoundSetter<T>>{
	void set(T arg);
}

interface Setter extends SelfBoundSetter<Setter>{}

public class SelfBoundingAndCovarianArguments {

	void testA(Setter s1,Setter s2,SelfBoundSetter sbs){
		s1.set(s2);
		
		//s1.set(sbs);//Error:
//		set(Setter) in the type SelfBoundSetter<Setter> 
//		is not applicable for the arguments (SelfBoundSetter)
	}
}
